import App from './App'

// #ifndef VUE3
import Vue from 'vue'
Vue.config.productionTip = false
App.mpType = 'app'

import store from './store'
Vue.prototype.$store = store

// main.js
import uView from "uview-ui";
Vue.use(uView);

try {
    function isPromise(obj) {
        return (!!obj &&
            (typeof obj === "object" || typeof obj === "function") &&
            typeof obj.then === "function"
        );
    }

    // 统一 vue2 API Promise 化返回格式与 vue3 保持一致
    uni.addInterceptor({
        returnValue(res) {
            if (!isPromise(res)) {
                return res;
            }
            return new Promise((resolve, reject) => {
                res.then((res) => {
                    if (res[0]) {
                        reject(res[0]);
                    } else {
                        resolve(res[1]);
                    }
                });
            });
        },
    });
} catch (error) {}

// 把 store 对象提供给 “store” 选项，这可以把 store 的实例注入所有的子组件
const app = new Vue({
    store,
    ...App
})
app.$mount()
    // #endif

// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
    const app = createSSRApp(App)
    return {
        app
    }
}
// #endif